
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

<html>
    <head>
        <meta charset="utf-8">
        <script src="lib/simpleRequire.js"></script>
        <script src="lib/config.js"></script>
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <link rel="stylesheet" href="lib/reset.css" />
        <script src="lib/testHelper.js"></script>
        <script src="tooltipTestHelper.js"></script>
    </head>
    <body>
        <style>
            h1 {
                line-height: 60px;
                height: 60px;
                background: #ddd;
                text-align: center;
                font-weight: bold;
                font-size: 14px;
            }
            .chart {
                height: 350px;
            }
        </style>


        <h1>category | axisPointer label should not show | legend tooltip | axis name tooltip on 1st grid</h1>
        <div class="chart" id="category"></div>
        <h1>global-axis-pointer-style | axisPointer label should not show</h1>
        <div class="chart" id="global-axis-pointer-style"></div>
        <h1>cross compatible | tooltip.trigger: 'item' | yAxis pointer precision 3 | crossStyle set | xAxisPointer label show</h1>
        <div class="chart" id="cross-item"></div>
        <h1>cross compatible | tooltip.trigger: 'axis' | xAxisPointer label not show</h1>
        <div class="chart" id="cross-axis"></div>
        <h1>tooltip.axisPointer.axis is 'y' | auto snap | auto animation when snap</h1>
        <div class="chart" id="tooltip.axisPointer.axis"></div>
        <h1>showDelay: 50 | enterable | dynamic callback</h1>
        <div class="chart" id="main"></div>
        <h1>set position</h1>
        <div class="chart" id="position"></div>
        <h1>confine</h1>
        <div class="chart" id="confine"></div>
        <h1>triggerOn click</h1>
        <div class="chart" id="click"></div>
        <h1>dispatchAciton manually with `position` specified (postion: [10,10])</h1>
        <div class="chart" id="positionSpecified"></div>
        <!--<h1>alwaysShowContent (check when hover on the last one, the content should not be the previous one)</h1>-->
        <!--<div class="chart" id="alwaysShowContent"></div>-->





        <script>

            require(['echarts'], function (echarts) {

                var option = {
                    tooltip: {
                        trigger: 'axis',
                        axisPointer: {
                            type: 'line'
                        }
                    }
                };
                var baseTop = 90;
                var height = 150;
                var gap = 50;
                makeCategoryGrid(option, {
                    grid: {top: baseTop, height: height},
                    yAxis: {
                        name: 'axisPointer: line\nno item trigger',
                        tooltip: {show: true}
                    },
                    xAxis: {
                        tooltip: {show: true}
                    }
                });
                baseTop += height + gap;
                makeCategoryGrid(option, {
                    grid: {top: baseTop, height: height},
                    yAxis: {name: 'axisPointer: shadow\nno item trigger'},
                    xAxis: {
                        axisPointer: {
                            type: 'shadow'
                        }
                    }
                });
                baseTop += height + gap;
                makeCategoryGrid(option, {
                    grid: {top: baseTop, height: height},
                    yAxis: {name: 'trigger: item \n(only the 1st series item trigger)'},
                    xAxis: {
                        axisPointer: {show: false}
                    },
                    series: [
                        {tooltip: {trigger: 'item'}}
                    ]
                });
                baseTop += height + gap;
                makeCategoryGrid(option, {
                    grid: {top: baseTop, height: height},
                    yAxis: {name: 'both axis and item trigger\n(the 1st series can item trigger)'},
                    xAxis: {
                        axisPointer: {type: 'shadow'}
                    },
                    series: [
                        {tooltip: {trigger: 'item'}}
                    ]
                });
                baseTop += height + gap;

                var dom = document.getElementById('category');
                if (dom) {
                    dom.style.height = baseTop + 'px';
                    var chart = echarts.init(dom);
                    chart.setOption(option);
                }
            })

        </script>












        <script>

            require(['echarts'], function (echarts) {

                var option = {
                    tooltip: {
                        trigger: 'axis',
                        axisPointer: {
                            type: 'shadow'
                        }
                    },
                    axisPointer: {
                        shadowStyle: {
                            color: 'red'
                        }
                    }
                };
                var baseTop = 90;
                var height = 150;
                var gap = 50;
                makeCategoryGrid(option, {
                    grid: {top: baseTop, height: height},
                    yAxis: {name: 'should be red shadow'}
                });
                baseTop += height + gap;

                var dom = document.getElementById('global-axis-pointer-style');
                if (dom) {
                    dom.style.height = baseTop + 'px';
                    var chart = echarts.init(dom);
                    chart.setOption(option);
                }
            })
        </script>











        <script>

            require(['echarts'], function (echarts) {

                var option = {
                    tooltip: {
                        trigger: 'axis',
                        axisPointer: {
                            type: 'cross'
                        }
                    }
                };
                var baseTop = 90;
                var height = 150;
                var gap = 50;
                makeCategoryGrid(option, {
                    grid: {top: baseTop, height: height}
                });
                baseTop += height + gap;

                var dom = document.getElementById('cross-axis');
                if (dom) {
                    dom.style.height = baseTop + 'px';
                    var chart = echarts.init(dom);
                    chart.setOption(option);
                }
            })

        </script>








        <script>

            require(['echarts'], function (echarts) {

                var option = {
                    tooltip: {
                        trigger: 'item',
                        axisPointer: {
                            type: 'cross',
                            crossStyle: {
                                color: 'blue',
                                shadowBlur: 4,
                                shadowColor: '#000',
                                shadowOffsetX: 3,
                                shadowOffsetY: 3,
                                textStyle: {
                                    color: 'yellow',
                                    fontSize: 16
                                }
                            }
                        }
                    }
                };
                var baseTop = 90;
                var height = 150;
                var gap = 50;
                makeCategoryGrid(option, {
                    grid: {top: baseTop, height: height},
                    yAxis: {
                        axisPointer: {
                            label: {
                                precision: 3
                            }
                        }
                    }
                });
                baseTop += height + gap;

                var dom = document.getElementById('cross-item');
                if (dom) {
                    dom.style.height = baseTop + 'px';
                    var chart = echarts.init(dom);
                    chart.setOption(option);
                }
            })

        </script>














        <script>

            require(['echarts'], function (echarts) {

                var option = {
                    tooltip: {
                        trigger: 'axis',
                        axisPointer: {
                            type: 'cross',
                            axis: 'y'
                        }
                    }
                };
                var baseTop = 90;
                var height = 150;
                var gap = 50;
                makeCategoryGrid(option, {
                    grid: {top: baseTop, height: height}
                });
                baseTop += height + gap;

                var dom = document.getElementById('tooltip.axisPointer.axis');
                if (dom) {
                    dom.style.height = baseTop + 'px';
                    var chart = echarts.init(dom);
                    chart.setOption(option);
                }
            })
        </script>











        <script>

            require([
                'echarts'
            ], function (echarts) {

                var dom = document.getElementById('main');
                if (!dom) {
                    return;
                }
                var chart = echarts.init(dom);

                var xAxisData = [];
                var data1 = [];
                var data2 = [];
                var data3 = [];
                var data4 = [];

                for (var i = 0; i < 10; i++) {
                    xAxisData.push('类目' + i);
                    data1.push((Math.random() * 5).toFixed(2));
                    data2.push(-Math.random().toFixed(2));
                    data3.push((Math.random() + 0.5).toFixed(2));
                    data4.push((Math.random() + 0.3).toFixed(2));
                }

                chart.setOption({
                    legend: {
                        data: ['坐标轴触发1', '坐标轴触发2', '数据项触发', '不显示的数据项触发'],
                        tooltip: {
                            show: true,
                            formatter: null
                        }
                    },
                    tooltip : {         // Option config. Can be overwrited by series or data
                        trigger: 'axis',
                        //show: true,   //default true
                        showDelay: 50,
                        hideDelay: 200,
                        transitionDuration:0.2,
                        backgroundColor : 'rgba(255,0,255,0.7)',
                        borderColor : '#f50',
                        borderRadius : 8,
                        borderWidth: 2,
                        enterable: true,
                        padding: 10,    // [5, 10, 15, 20]
                        axisPointer: {
                            type: 'shadow'
                        },
                        position : function(p) {
                            // 位置回调
                            // console.log && console.log(p);
                            return [p[0] + 10, p[1] - 10];
                        },
                        textStyle : {
                            color: 'yellow',
                            decoration: 'none',
                            fontFamily: 'Verdana, sans-serif',
                            fontSize: 15,
                            fontStyle: 'italic',
                            fontWeight: 'bold'
                        },
                        formatter: function (params,ticket,callback) {
                            if (params.componentType === 'legend') {
                                return params.name;
                            }
                            var res = 'Function formatter : <br/>' + params[0].name;
                            for (var i = 0, l = params.length; i < l; i++) {
                                res += '<br/>' + params[i].seriesName + ' : ' + params[i].value;
                            }
                            res += '<br /><a target="_blank" href="http://www.baidu.com">搜索</a>';
                            setTimeout(function (){
                                // 仅为了模拟异步回调
                                callback(ticket, res);
                            }, 1000);
                            return 'loading';
                        }
                        // ,formatter: "Template formatter: <br/>{b}<br/>{a}:{c}<br/>{a1}:{c1}"
                    },
                    toolbox: {
                        show : true,
                        feature : {
                            mark : {show: true},
                            dataView : {show: true, readOnly: false},
                            magicType : {show: true, type: ['line', 'bar', 'stack', 'tiled']},
                            restore : {show: true},
                            saveAsImage : {show: true}
                        }
                    },
                    calculable : true,
                    xAxis : {
                        data : ['周一','周二','周三','周四','周五','周六','周日']
                    },
                    yAxis : {
                        type : 'value'
                    },
                    series : [
                        {
                            name:'坐标轴触发1',
                            type:'bar',
                            data:[
                                {value:320, extra:'Hello~'},
                                332, 301, 334, 390, 330, 320
                            ]
                        },
                        {
                            name:'坐标轴触发2',
                            type:'bar',
                            data:[862, 1018, 964, 1026, 1679, 1600, 157]
                        },
                        {
                            name:'数据项触发',
                            type:'bar',
                            tooltip : {             // Series config.
                                trigger: 'item',
                                backgroundColor: 'black',
                                position : [0, 0],
                                formatter: 'Series formatter: <br/>{a}<br/>{b}:{c}'
                            },
                            stack: '数据项',
                            data:[
                                {
                                    value: 120,
                                    tooltip: '我是一个简单的字符串',
                                    label: {
                                        normal: {show: true, formatter: 'formatter is string', textStyle: {color: '#222'}}
                                    }
                                }, 132,
                                {
                                    value: 301,
                                    itemStyle: {normal: {color: 'red'}},
                                    tooltip : {     // Data config.
                                        backgroundColor: 'blue',
                                        formatter: 'Data formatter: <br/>{a}<br/>{b}:{c}'
                                    }
                                },
                                134, 90,
                                {
                                    value: 230,
                                    label: {
                                        normal: {
                                            show: true,
                                            formatter: '我不显示 tooltip'
                                        }
                                    },
                                    tooltip: {show: false}
                                },
                                210
                            ]
                        },
                        {
                            name:'不显示的数据项触发',
                            type:'bar',
                            tooltip : {
                                show : false,
                                trigger: 'item'
                            },
                            stack: '数据项',
                            data:[150, 232, 201, 154, 190, 330, 410]
                        }
                    ]
                });
            });
        </script>











        <script>

            require(['echarts'], function (echarts) {

                var option = {
                    tooltip: {
                    },
                    series: {
                        name: '访问来源',
                        type: 'pie',
                        radius : 80,
                        tooltip: {
                            formatter: "{a} <br/>{b} : {c} ({d}%)"
                        },
                        data:[
                            {
                                value:335, name:'position: [300, 100]',
                                tooltip: {
                                    position: [300, 100]
                                }
                            },
                            {
                                value:310, name:'position: function [p[0] + 10, p[1] - 50]',
                                tooltip: {
                                    position : function(p) {
                                        return [p[0] + 10, p[1] - 50];
                                    }
                                }
                            },
                            {
                                value:234, name:'position: inside',
                                tooltip: {
                                    position : 'inside'
                                }
                            },
                            {
                                value:135, name:'align: right; verticalAlign: bottom',
                                tooltip: {
                                    align: 'right',
                                    verticalAlign: 'bottom'
                                }
                            },
                            {
                                value:548, name:'position: [30, 140], verticalAlign: bottom',
                                tooltip: {
                                    position: [30, 140],
                                    verticalAlign: 'bottom'
                                }
                            }
                        ],
                        itemStyle: {
                            emphasis: {
                                shadowBlur: 10,
                                shadowOffsetX: 0,
                                shadowColor: 'rgba(0, 0, 0, 0.5)'
                            }
                        }
                    }
                };

                createChart('position', echarts, option, 500);
            })
        </script>







        <script>

            require(['echarts'], function (echarts) {

                var option = {
                    tooltip: {
                        confine: true,
                        borderWidth: 10,
                        borderColor: 'green',
                        padding: 20,
                        formatter: "{a} <br/>{b} : {c} ({d}%)"
                    },
                    series: {
                        name: '访问来源',
                        type: 'pie',
                        radius : 1180,
                        data:[
                            {
                                value:335, name:'position: [300, 100]',
                            },
                            {
                                value:310, name:'position: function [p[0] + 10, p[1] - 50]',
                            },
                            {
                                value:234, name:'position: inside',
                            },
                            {
                                value:135, name:'align: right; verticalAlign: bottom',
                                tooltip: {
                                    align: 'right',
                                    verticalAlign: 'bottom'
                                }
                            },
                            {
                                value:548, name:'position: [30, 140], verticalAlign: bottom',
                            }
                        ],
                        itemStyle: {
                            emphasis: {
                                shadowBlur: 10,
                                shadowOffsetX: 0,
                                shadowColor: 'rgba(0, 0, 0, 0.5)'
                            }
                        }
                    }
                };

                createChart('confine', echarts, option, 500);
            })
        </script>





        <script>

            require(['echarts'], function (echarts) {

                var option = {
                    tooltip: {
                        trigger: 'axis',
                        triggerOn: 'click',
                        axisPointer: {
                            type: 'cross'
                        }
                    }
                };
                var baseTop = 90;
                var height = 150;
                var gap = 50;
                makeCategoryGrid(option, {
                    grid: {top: baseTop, height: height},
                    yAxis: {
                        name: 'click show tip',
                        tooltip: {
                            show: true
                        }
                    }
                });
                baseTop += height + gap;

                createChart('click', echarts, option, baseTop);
            })
        </script>









        <script>

            require(['echarts'], function (echarts) {

                var option = {
                    title: {
                        text: '未来一周气温变化',
                        subtext: '纯属虚构'
                    },
                    tooltip: {
                        trigger: 'axis'
                    },
                    legend: {
                        data:['最高气温','最低气温']
                    },
                    toolbox: {
                        show: true,
                        feature: {
                            dataZoom: {
                                yAxisIndex: 'none'
                            },
                            dataView: {readOnly: false},
                            magicType: {type: ['line', 'bar']},
                            restore: {},
                            saveAsImage: {}
                        }
                    },
                    xAxis:  {
                        type: 'category',
                        boundaryGap: false,
                        data: ['周一','周二','周三','周四','周五','周六','周日']
                    },
                    yAxis: {
                        type: 'value',
                        axisLabel: {
                            formatter: '{value} °C'
                        }
                    },
                    series: [
                        {
                            name:'最高气温',
                            type:'line',
                            data:[11, 11, 15, 13, 12, 13, 10],
                            markPoint: {
                                data: [
                                    {type: 'max', name: '最大值'},
                                    {type: 'min', name: '最小值'}
                                ]
                            },
                            markLine: {
                                data: [
                                    {type: 'average', name: '平均值'}
                                ]
                            }
                        },
                        {
                            name:'最低气温',
                            type:'line',
                            data:[1, -2, 2, 5, 3, 2, 0],
                            markPoint: {
                                data: [
                                    {name: '周最低', value: -2, xAxis: 1, yAxis: -1.5}
                                ]
                            },
                            markLine: {
                                data: [
                                    {type: 'average', name: '平均值'},
                                    [{
                                        symbol: 'none',
                                        x: '90%',
                                        yAxis: 'max'
                                    }, {
                                        symbol: 'circle',
                                        label: {
                                            normal: {
                                                position: 'start',
                                                formatter: '最大值'
                                            }
                                        },
                                        type: 'max',
                                        name: '最高点'
                                    }]
                                ]
                            }
                        }
                    ]
                };

                var chart = createChart('positionSpecified', echarts, option, 500);

                setTimeout(function () {
                    chart.dispatchAction({
                        type: 'showTip',
                        seriesIndex: 0,
                        dataIndex: 0,
                        position: function () {
                            return [10, 10];
                        }
                    })
                }, 1000);

            })
        </script>






        <script>

            require(['echarts'], function (echarts) {

                var option = {
                    tooltip: {
                        trigger: 'axis',
                        triggerOn: 'click',
                        axisPointer: {
                            type: 'cross'
                        }
                    }
                };
                var baseTop = 90;
                var height = 150;
                var gap = 50;
                makeCategoryGrid(option, {
                    grid: {top: baseTop, height: height},
                    yAxis: {
                        name: 'click show tip',
                        tooltip: {
                            show: true
                        }
                    }
                });
                baseTop += height + gap;

                createChart('click', echarts, option, baseTop);
            })
        </script>


    </body>
</html>